//
//  DataBaseManager.m
//  UI22_数据库
//
//  Created by 王妍 on 16/1/7.
//  Copyright © 2016年 www.lanou3g.com 蓝鸥. All rights reserved.
//

#import "DataBaseManager.h"

@implementation DataBaseManager
+ (DataBaseManager *)shareInstance
{
    // 静态指针变量 保证指针只有一个
    static DataBaseManager *dbManager = nil;
    // 是否是第一次调用该方法
    // 如果指针中为空创建对象
    if (!dbManager) {
        // 单例中的alloc不需要release
        dbManager = [[DataBaseManager alloc]init];
    }
    
    // 如果指针不为空 直接返回
    return dbManager;
}
- (void)openDB
{
    // 数据库一般放在Documents下
    // 后缀: db/sqlite
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"suibian.db"];
    // 创建数据库文件
    // 判断dbPoint指针中 是否存在数据库指针 如果不存在 再创建
    // 参数1: 数据库路径(UTF-8转码)
    // 参数2: 数据库指针地址
    int result = sqlite3_open(path.UTF8String, &dbPoint);//
    NSLog(@"打开数据库: %d, 路径: %@", result, path);
}

/// 关闭数据库
- (void)closeDB
{
    sqlite3_close(dbPoint);
}
/// 创建表
- (void)createTable
{
    // 1.SQL语句
    // EXIST 存在
    // text 字符串
    // integer 整数
    // primary key 主键 必须写
    // autoincrement 自动增加 可写可不写
    NSString *createSQL = @"CREATE TABLE IF NOT EXISTS movie (movieName text, pubdata text, movieId integer PRIMARY KEY AUTOINCREMENT)";
    
    // 2.执行语句
    // 参数1: 数据库指针
    // 参数2: sql语句
    // 参数3:
    // 参数4:
    
      int result = sqlite3_exec(dbPoint, createSQL.UTF8String, NULL, NULL, NULL);
    // 3.判断
    if (result == SQLITE_OK) {
        NSLog(@"创建表成功");
    }else{
        NSLog(@"失败: %d", result);
    }
}

/// 删除表
- (void)dropTable
{
    // 1.SQL
    NSString *dropSQL = @"DROP TABLE movie";
    // 2.执行
    int result = sqlite3_exec(dbPoint, dropSQL.UTF8String, NULL, NULL, NULL);
    // 3.判断
    [self judgeResult:result message:@"删除表"];
    
    
}

/// 判断方法
// 参数1: 判断的数值
// 参数2: 打印信息
- (void)judgeResult: (int)r message: (NSString *)mes
{
    if (r == SQLITE_OK) {
        NSLog(@"%@成功", mes);
    }else
    {
        NSLog(@"%@失败: %d", mes, r);
    }
}
@end
